{
  "cells": [
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "LVyq5-i3p2Td"
      },
      "source": [
        "## 自动生成聊天的尝试\n",
        "\n",
        "这个脚本由李鲁鲁开发， 属于[Chat凉宫春日](https://github.com/LC1332/Chat-Haruhi-Suzumiya) \n",
        "\n",
        "用于研究是否能够基于GPT生成大量的对话数据\n",
        "\n",
        "**Chat凉宫春日**是模仿凉宫春日等一系列动漫人物，使用近似语气、个性和剧情聊天的语言模型，\n",
        "\n",
        "<details>\n",
        "  <summary> 由李鲁鲁，冷子昂，闫晨曦，封小洋等开发。 </summary>\n",
        "\n",
        "李鲁鲁发起了项目，并完成了最早的版本，在多个微信群实现了测试。\n",
        "\n",
        "冷子昂参与了早期Gradio的开发，并且参与了后端和前端的选型\n",
        "\n",
        "闫晨曦将李鲁鲁的notebook重构为app.py\n",
        "\n",
        "封小洋进行了中文转日文模型的选型\n",
        "\n",
        "</details>\n",
        "\n",
        "- [x] 读取所有现有剧情的数据\n",
        "- [x] 读取drive上记录的数据，并去重\n",
        "- [x] 对于每一段经典剧情，看看实测的时候问了什么问题\n",
        "- [x] 检查是否有用户对话远离所有的问题，一般是什么样的问题\n",
        "- [ ] 看看是否能够直接生成一段对话\n",
        "- [x] 看看是否能够生成10个问题，(这种方式不太好）\n",
        "- [ ] 比较逐句生成（haruhi仍然用原来方案）和整段生成的差别\n",
        "- [ ] 在完成以上实验后，重新思考完整的生成对话的方案。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "65r5JoDxpzsw"
      },
      "outputs": [],
      "source": [
        "#@title 安装环境\n",
        "! pip -q install openai gradio transformers tiktoken langchain gradio"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "cellView": "form",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 313,
          "referenced_widgets": [
            "0b5d53e09ae7480bb7553f0137b39725",
            "1969aa74ac504c3883c0db532f485b86",
            "9552b7ea6081425db5fee9cbcea72de3",
            "607b0b3a42164ab58398b88d37669731",
            "c386ca31288f4d1e9e32884c379fe154",
            "4d4761f6e7a04baaa4433c96e7a88334",
            "76c81633765d48508694c9f06fde6661",
            "46efcba2826d466aba2e5f020cf7a3fc",
            "69cc624420944317bddd996f5446957d",
            "3c156471817d4337a5ac9b9e8ff2ad6d",
            "6bd2d2821f754b7ab7f624f98c4f2e7c",
            "fdaf861a10ea44c18117482ec40dee0a",
            "932571b0f99a40b0a9bbd83a7ccfc885",
            "3865e7b9514a455cacb8c8b3abccd744",
            "9f56d20234754e138d68edb96c783cb0",
            "96b22032a1b94a0eb77fcd08e23ce48b",
            "6b4cc91463a74541802e46160767b4be",
            "36d4046eaa8f4e50807c80fcf36dd055",
            "4b63e3f1d5994ffdab7356db0e00aa06",
            "530a08cf646a453e9dbe7fa7b9a95e01",
            "022caed6b4f24bd3868eadc60ad72f1a",
            "a6ca3e57a8f4447e9c2c6443f257aa28",
            "599e61f60c8545b6920b6bc85650a5c2",
            "66c16d2595d64c3b8fe5b7f51bc3bcc5",
            "21eee9cfe123403db81472bc78d81698",
            "cf4fe213e49f4b1cad4975e32490dbe9",
            "5277fde7712d4e5ba280b822c0068365",
            "40ec66ceb75f48fd8be2ce52be1a4ffb",
            "d4b3d7eabb58478a993a85135858b112",
            "d78bab23efb14e1491949562dc6a0a9d",
            "023b4389911c4f069940a15b1273a410",
            "c4b1bd32681b4736864b90af7b99ba3d",
            "42f0876403d14d1886b8df0b1c468541",
            "a47b2d687a78407288c3c943e1aaa2a5",
            "dc228fb59da64bdfa543b63a6763cd95",
            "681c73439ab84d99bc3680df5bb31090",
            "190e6787e9624a189c3875656de5815f",
            "b31a9855630b4474ba25928e066bae54",
            "1412071056a74dc39f7c6ee54fb36be9",
            "61519383f3404783a33e1914f0ec9962",
            "98dfb794c9d64fadb37ccdaf4c38e2a6",
            "b1b5110555e347a69674a18ec3cfa2b7",
            "e6993aaae3184638a92bfe9c4c1f9524",
            "e7a17f30f76841028c8db1c836b16129",
            "6b4b61367708458f8ccc39d6b187c5c5",
            "0593cd08426b4ef3aded8d29d756d712",
            "f65c91dbfbef4c86828a654d50dce984",
            "57cbcf440b6f4964be1fcd328fd44e72",
            "fb0c2ec491f644bb8af05454cc7cf3f6",
            "2ccfa7b9fb114eeab63dd5e20790744e",
            "c7b88ae0ac9042369defb3ccd98e5758",
            "1b6fe00e7beb410cb9c8d70db0c21ea5",
            "b4fede05d03a45b59ed2a02547f5a12a",
            "3a3e91bbc493417b821a82f6bdf1c33a",
            "8cabeef207cb4702b4bd21213e210739",
            "eeb43bf5fccc46479d943ba997178d18",
            "15c13f6b9a9641c697b22bc5a546451f",
            "2f7062c1e24b46d0a8f6dc7d597f1000",
            "9092d3a710b74afabeab7425ba63fb50",
            "654c1b8bd23041b39da0c77c6f314395",
            "da7e4f244c9045bcaa83c71da29a3710",
            "147e56ebab3a4d02ae4ca9bfc91d2fba",
            "a3a46e029b0945d3a03ea004e6b00859",
            "09b0383efae440cea3f7a1212d3a3dc8",
            "d09ef81d3bbf473a8f7c71ac7c70b664",
            "6a09cd50ee5b467eabf5f08da06799b2",
            "d135d4fa1eac4a65aa34172fdaf1cc40",
            "ff433f8c961d45eca3f69062957de9f7",
            "8330a7ff2a114d6aad60c46fabb01aa6",
            "9477dc4992be45dd908f0dcaecf3a75c",
            "50cc970fa3db47929feeb85b9de7aeaa",
            "19a968c966d14e59bb0c93e767b9dfbe",
            "7a09a52f5e0c4df7a29bc056824217f6",
            "3f46e23509ba4b50bc5032dd966416bb",
            "60452905aae440808b693f5a47c31ee2",
            "d97450ba454346b5b5ffef17304a745b",
            "a5e8fcfd0d2040c8ab6c50e47de2757a"
          ]
        },
        "id": "3a0CnDcLsFbu",
        "outputId": "7d50e4e1-94f6-4f72-ef2a-b08423b51b4a"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "0b5d53e09ae7480bb7553f0137b39725",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading (…)okenizer_config.json:   0%|          | 0.00/539 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "fdaf861a10ea44c18117482ec40dee0a",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading (…)solve/main/vocab.txt:   0%|          | 0.00/110k [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "599e61f60c8545b6920b6bc85650a5c2",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading (…)/main/tokenizer.json:   0%|          | 0.00/439k [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "a47b2d687a78407288c3c943e1aaa2a5",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading (…)cial_tokens_map.json:   0%|          | 0.00/125 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "6b4b61367708458f8ccc39d6b187c5c5",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading (…)lve/main/config.json:   0%|          | 0.00/966 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "eeb43bf5fccc46479d943ba997178d18",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading (…)solve/main/models.py:   0%|          | 0.00/21.1k [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "A new version of the following files was downloaded from https://huggingface.co/silk-road/luotuo-bert:\n",
            "- models.py\n",
            ". Make sure to double-check they do not contain any added malicious code. To avoid downloading new versions of the code file, you can pin a revision.\n"
          ]
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "d135d4fa1eac4a65aa34172fdaf1cc40",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading pytorch_model.bin:   0%|          | 0.00/414M [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "#@title 准备embedding, cosine相似度, retrieve_title函数\n",
        "\n",
        "import torch\n",
        "from scipy.spatial.distance import cosine\n",
        "from transformers import AutoModel, AutoTokenizer\n",
        "from argparse import Namespace\n",
        "# Import our models. The package will take care of downloading the models automatically\n",
        "tokenizer = AutoTokenizer.from_pretrained(\"silk-road/luotuo-bert\")\n",
        "model_args = Namespace(do_mlm=None, pooler_type=\"cls\", temp=0.05, mlp_only_train=False, init_embeddings_model=None)\n",
        "model = AutoModel.from_pretrained(\"silk-road/luotuo-bert\", trust_remote_code=True, model_args=model_args)\n",
        "\n",
        "def get_embedding(text):\n",
        "    if len(text) > 512:\n",
        "        text = text[:512]\n",
        "    texts = [text]\n",
        "    # Tokenize the text\n",
        "    inputs = tokenizer(texts, padding=True, truncation=True, return_tensors=\"pt\")\n",
        "    # Extract the embeddings\n",
        "    # Get the embeddings\n",
        "    with torch.no_grad():\n",
        "        embeddings = model(**inputs, output_hidden_states=True, return_dict=True, sent_emb=True).pooler_output\n",
        "\n",
        "    return embeddings[0]\n",
        "\n",
        "def get_cosine_similarity( embed1 , embed2 ):\n",
        "    return torch.nn.functional.cosine_similarity( embed1, embed2 , dim=0)\n",
        "\n",
        "# implement retrieve_title function, return top k titles\n",
        "def retrieve_title( query_embed, embeddings, embed_to_title, k ):\n",
        "    # compute cosine similarity between query_embed and embeddings\n",
        "    cosine_similarities = []\n",
        "    for embed in embeddings:\n",
        "        cosine_similarities.append( get_cosine_similarity( query_embed, embed ) )\n",
        "    \n",
        "    # sort cosine similarity\n",
        "    sorted_cosine_similarities = sorted( cosine_similarities, reverse=True )\n",
        "\n",
        "    top_k_index = []\n",
        "    top_k_title = []\n",
        "\n",
        "    for i in range(len(sorted_cosine_similarities)):\n",
        "        current_title = embed_to_title[ cosine_similarities.index( sorted_cosine_similarities[i] ) ]\n",
        "        if current_title not in top_k_title:\n",
        "            top_k_title.append( current_title )\n",
        "            top_k_index.append( cosine_similarities.index( sorted_cosine_similarities[i] ) )\n",
        "\n",
        "        if len(top_k_title) == k:\n",
        "            break\n",
        "    \n",
        "    return top_k_title"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "puMRQzJ7s7X9"
      },
      "source": [
        "## 输入OpenAI Token"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "QGFxCkU7s0VW"
      },
      "outputs": [],
      "source": [
        "import os\n",
        "import openai\n",
        "\n",
        "openai.api_key = 'sk-lfrdoJ' # 在这里输入你的OpenAI API Token\n",
        "os.environ[\"OPENAI_API_KEY\"] = openai.api_key "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "cellView": "form",
        "id": "Z0xV5tPXtC4n"
      },
      "outputs": [],
      "source": [
        "#@title 定义get_completion函数\n",
        "import openai\n",
        "# 一个封装 OpenAI 接口的函数，参数为 Prompt，返回对应结果\n",
        "def get_completion_from_messages(messages, model=\"gpt-3.5-turbo\", temperature=0):\n",
        "    response = openai.ChatCompletion.create(\n",
        "        model=model,\n",
        "        messages=messages,\n",
        "        temperature=temperature, # 控制模型输出的随机程度\n",
        "    )\n",
        "#     print(str(response.choices[0].message))\n",
        "    return response.choices[0].message[\"content\"]"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "cellView": "form",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ynCAaf7ZtOyT",
        "outputId": "93e07bee-e502-4016-da2b-645dbb165a3a"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Cloning into 'Prophet-Andrew-Ng'...\n",
            "remote: Enumerating objects: 619, done.\u001b[K\n",
            "remote: Counting objects: 100% (347/347), done.\u001b[K\n",
            "remote: Compressing objects: 100% (189/189), done.\u001b[K\n",
            "remote: Total 619 (delta 204), reused 284 (delta 157), pack-reused 272\u001b[K\n",
            "Receiving objects: 100% (619/619), 1.64 MiB | 19.48 MiB/s, done.\n",
            "Resolving deltas: 100% (327/327), done.\n",
            "搞电脑过程 438 | 朝仓转学 457 | 颜色与星期 473 | 开学第二天 210 | 社团教室 715 | 电脑是怎么来的 153 | 让阿虚帮忙建社团 287 | 兔女郎的反应 239 | 兔女郎 332 | 地球上小小的螺丝钉 993 | 从哪儿搞电脑 319 | 询问朝仓信息 362 | 找管理员借钥匙 115 | 最后一名社员 357 | 为什么剪头发 43 | 交往的男生 638 | 初中交往经历 168 | 古泉是男的还是女的 203 | 转学生的消息 236 | SOS团起名由来 265 | 无聊的社团 284 | 萌角色的重要性 692 | 自己建一个社团就好啦 353 | 日常3 216 | 不重要的事情 38 | 介绍其他社员 254 | 春日与有希 101 | 约翰史密斯 168 | 团长设定 201 | 凉宫春日为何转变 154 | 没有灵异事件 665 | 转学生 286 | 带上阿虚去朝仓家 394 | 自我介绍 115 | 电研社初次会面 416 | 第一次全员大会 374 | 春日与阿虚 149 | 谁来写网站 193 | 与朝仓公寓管理员谈话 474 | 凉宫春日的基础设定 217 | 兔女郎被老师驱散 444 | 电子邮箱 143 | 奇怪的朝仓 296 | 拉壮丁 668 | 最新的电脑 200 | 无聊的日常2 288 | 传单 424 | 像普通人一样生活 684 | "
          ]
        }
      ],
      "source": [
        "#@title 提取Haruhi经典剧情文本，并且抽取Embedding,定义tikoken的enc模型\n",
        "\n",
        "!git clone https://github.com/LC1332/Prophet-Andrew-Ng\n",
        "\n",
        "import tiktoken\n",
        "\n",
        "enc = tiktoken.get_encoding(\"cl100k_base\")\n",
        "\n",
        "prophet_data_folder = '/content/Prophet-Andrew-Ng/haruhi-data'\n",
        "\n",
        "import os\n",
        "\n",
        "titles = []\n",
        "title_to_text = {}\n",
        "\n",
        "# scan all txt file in prophet_data_folder\n",
        "for file in os.listdir(prophet_data_folder):\n",
        "    if file.endswith('.txt'):\n",
        "        title_name = file[:-4]\n",
        "        titles.append(title_name)\n",
        "\n",
        "        with open(os.path.join(prophet_data_folder, file), 'r') as f:\n",
        "            title_to_text[title_name] = f.read()\n",
        "\n",
        "# report length of each text\n",
        "for title in titles:\n",
        "    print(title, len(enc.encode(title_to_text[title])),end= ' | ')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 41,
      "metadata": {
        "cellView": "form",
        "id": "TGIQCLKtuRSF"
      },
      "outputs": [],
      "source": [
        "#@title 对每个故事抽取向量，保存到embeddings\n",
        "\n",
        "embeddings = []\n",
        "embed_to_title = []\n",
        "\n",
        "for title in titles:\n",
        "    text = title_to_text[title]\n",
        "\n",
        "    # divide text with \\n\\n\n",
        "    # divided_texts = text.split('\\n\\n')\n",
        "    divided_texts = [text]\n",
        "\n",
        "    for divided_text in divided_texts:\n",
        "        embed = get_embedding(divided_text)\n",
        "        embeddings.append(embed)\n",
        "        embed_to_title.append(title)\n",
        "    \n",
        "    # embed_title = get_embedding(title)\n",
        "    # embeddings.append( embed )\n",
        "    # embed_to_title.append(title)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "h7aTe1M7u95w",
        "outputId": "0257e791-3bd0-4d78-d6de-41b919936d14"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "48\n",
            "48\n"
          ]
        }
      ],
      "source": [
        "print(len(embeddings))\n",
        "print(len(titles))"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "c1rNPXC0u5pp"
      },
      "source": []
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "ZyFEVfX_uLE-"
      },
      "source": [
        "## Mount Google Drive，"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ev5Db2QAtI4i",
        "outputId": "1e55ad98-362c-4248-da10-e13f8ccdd451"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Mounted at /content/drive\n"
          ]
        }
      ],
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')\n",
        "\n",
        "save_path = \"/content/drive/MyDrive/GPTData/Haruhi-Lulu/\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "id": "09AIkCUHwCtm"
      },
      "outputs": [],
      "source": [
        "#@title 解析使用记录"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "p1ONFYjEv8vB"
      },
      "source": [
        "<details>\n",
        "  <summary> 下面的程序通过这段长Prompt生成 </summary>\n",
        "\n",
        "给定save_path = \"/content/drive/MyDrive/GPTData/Haruhi-Lulu/\"\n",
        "\n",
        "save_path中存储了很多txt，每两段的格式为\n",
        "\n",
        "```\n",
        "人物A:「对话A」\n",
        "---\n",
        "人物B:「对话B」\n",
        "---\n",
        "```\n",
        "\n",
        "我们希望扫描整个save_path中的txt，将每两行抽取为json的格式\n",
        "\n",
        "```js\n",
        "{ \"role_A\":\"人物A\", \"role_B\":\"人物B\",\"query\":\"「对话A」\", \"response\":\"「对话B」\"}\n",
        "```\n",
        "\n",
        "并最终把所有的数据保存到一个list chat_data中，同时注意\n",
        "\n",
        "- 冒号有可能是':'，也有可能是'：'\n",
        "- 注意段和段之间可能会有换行，分割需要以'\\n---\\n'为准\n",
        "- 如果---之间的整行都没有出现:，则认为人物是空字符串\"\"，对话是一整行\n",
        "- 如果解析错误，则输出文件名，并继续解析下一个txt文件\n",
        "\n",
        "\n",
        "例子输入\n",
        "\n",
        "```\n",
        "Kyon:「你好」\n",
        "---\n",
        "春日:「你好，我是凉宫春日，SOS团的团长。你需要什么帮助吗？」\n",
        "---\n",
        "```\n",
        "\n",
        "例子输出\n",
        "\n",
        "```js\n",
        "{ \"role_A\":\"Kyon\", \"role_B\":\"春日\",\"query\":\"「你好」\", \"response\":\"「你好，我是凉宫春日，SOS团的团长。你需要什么帮助吗？」\"}\n",
        "```\n",
        "\n",
        "例子输入\n",
        "\n",
        "```\n",
        "Kyon：「春日啊，我是阿虚，很久不见了」\n",
        "---\n",
        "「哦，是你啊，阿虚。你怎么这么久才来找我啊？有什么事情吗？」\n",
        "---\n",
        "```\n",
        "\n",
        "例子输出\n",
        "\n",
        "```js\n",
        "{ \"role_A\":\"Kyon\", \"role_B\":\"\",\"query\":\"「春日啊，我是阿虚，很久不见了」\", \"response\":\"「哦，是你啊，阿虚。你怎么这么久才来找我啊？有什么事情吗？」\"}\n",
        "```\n",
        "\n",
        "</details>\n"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "59VLf1o0zvrp"
      },
      "source": [
        "<details>\n",
        "  <summary> 去重的部分是这么写的 </summary>\n",
        "\n",
        "python的list chat_data中存储了很多形如如下形式\n",
        "\n",
        "```\n",
        "{'role_A': '阿虚', 'role_B': '春日', 'query': '「今天在计算机课上老师教了我写Python!」', 'response': '「哦？Python？那你能不能帮我写一个程序啊？」'}\n",
        "\n",
        "{'role_A': '阿虚', 'role_B': '春日', 'query': '「今天在计算机课上老师教了我写Python!」', 'response': '「哦？Python？那你能不能帮我写一个程序啊？」'}\n",
        "\n",
        "{'role_A': '阿虚', 'role_B': '春日', 'query': '「你想写一个什么样的程序呢？」', 'response': '「我想写一个能够预测未来的程序，可以预测天气、地震、彩票号码等等。」'}\n",
        "```\n",
        "\n",
        "的数据，当中有很多element是相互重复的，实现一段python程序，删除query和response的字符串都完全一样的元素\n",
        "\n",
        "将清理后的list仍然保存为chat_data\n",
        "\n",
        "</details>"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "zrPgTKmVu2Bd",
        "outputId": "78ddc761-47d8-454a-b30f-e8a1815a8d52"
      },
      "outputs": [],
      "source": [
        "#@title 解析所有对话数据\n",
        "\n",
        "import os\n",
        "import json\n",
        "\n",
        "save_path = \"/content/drive/MyDrive/GPTData/Haruhi-Lulu/\"\n",
        "\n",
        "chat_data = []\n",
        "\n",
        "for file_name in os.listdir(save_path):\n",
        "    # print(file_name)\n",
        "    file_path = os.path.join(save_path, file_name)\n",
        "    with open(file_path, 'r', encoding='utf-8') as f:\n",
        "        data = f.read()\n",
        "        segments = data.split('\\n---\\n')\n",
        "        for i in range(0, len(segments)-1, 2):\n",
        "            query = segments[i]\n",
        "            response = segments[i+1]\n",
        "            role_a = role_b = \"\"\n",
        "            if ':' in query:\n",
        "                role_a, query = query.split(':', 1)\n",
        "            elif '：' in query:\n",
        "                role_a, query = query.split('：', 1)\n",
        "            if ':' in response:\n",
        "                role_b, response = response.split(':', 1)\n",
        "            elif '：' in response:\n",
        "                role_b, response = response.split('：', 1)\n",
        "            chat = {\"role_A\":role_a.strip(), \"role_B\":role_b.strip(), \"query\":query.strip(), \"response\":response.strip()}\n",
        "            chat_data.append(chat)\n",
        "\n",
        "print(json.dumps(chat_data, ensure_ascii=False))\n",
        "\n",
        "cleaned_chat_data = []\n",
        "\n",
        "for i in range(len(chat_data)):\n",
        "    is_duplicate = False\n",
        "    for j in range(i+1, len(chat_data)):\n",
        "        if chat_data[i]['query'] == chat_data[j]['query'] and chat_data[i]['response'] == chat_data[j]['response']:\n",
        "            is_duplicate = True\n",
        "            break\n",
        "    if not is_duplicate:\n",
        "        cleaned_chat_data.append(chat_data[i])\n",
        "\n",
        "chat_data = cleaned_chat_data"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 30,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "cE1QvNwfzSZz",
        "outputId": "68218632-b654-4b90-b566-def6500e0259"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "545\n"
          ]
        }
      ],
      "source": [
        "print(len(chat_data))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 31,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "lu6S5NxSzeDQ",
        "outputId": "fe78fa71-638d-4503-e960-e3305b8bc857"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "{'role_A': '阿虚', 'role_B': '春日', 'query': '「今天在计算机课上老师教了我写Python!」', 'response': '「哦？Python？那你能不能帮我写一个程序啊？」'}\n",
            "{'role_A': '阿虚', 'role_B': '春日', 'query': '「你想写一个什么样的程序呢？」', 'response': '「我想写一个能够预测未来的程序，可以预测天气、地震、彩票号码等等。」'}\n"
          ]
        }
      ],
      "source": [
        "print(chat_data[0])\n",
        "print(chat_data[1])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 33,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "N79xjzY10cAF",
        "outputId": "b94e7180-a849-421a-ef64-73693cc0d568"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "阿虚:「今天在计算机课上老师教了我写Python!」\n",
            "春日:「哦？Python？那你能不能帮我写一个程序啊？」\n"
          ]
        }
      ],
      "source": [
        "#@title 实现一个反向函数json_chat_2_str，可以把chat_data再组织回对话格式，这样方便求embedding\n",
        "\n",
        "#这个好像我自己也行\n",
        "\n",
        "def json_chat_2_str( data ):\n",
        "    return data['role_A'] + ':' + data['query'] + '\\n' + data['role_B'] + ':' + data['response']\n",
        "\n",
        "print( json_chat_2_str( chat_data[0] ) )"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 36,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ieYWDS5d3psS",
        "outputId": "34cf3872-06be-4f7a-de49-acfe9970f277"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": []
        }
      ],
      "source": [
        "#@title 对每个chat也抽取向量\n",
        "\n",
        "#@title 对每个故事抽取向量，保存到embeddings\n",
        "\n",
        "from tqdm import tqdm\n",
        "\n",
        "chat_embeddings = []\n",
        "pbar = tqdm(chat_data, desc='Get embeddings', leave=False)\n",
        "for chat in pbar:\n",
        "    my_str = json_chat_2_str(chat)\n",
        "    embed = get_embedding(my_str)\n",
        "    chat_embeddings.append(embed)\n",
        "    pbar.set_description('Processing chat ')\n",
        "pbar.close()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 39,
      "metadata": {
        "id": "PhGVEPlW7nKv"
      },
      "outputs": [],
      "source": [
        "embed_to_chat = []\n",
        "\n",
        "for chat in chat_data:\n",
        "    my_str = json_chat_2_str(chat)\n",
        "    embed_to_chat.append(my_str)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 37,
      "metadata": {
        "cellView": "form",
        "id": "Vi2Jyw1c5ebK"
      },
      "outputs": [],
      "source": [
        "#@title 抽这个比较慢，做个pkl存储和读取吧\n",
        "\n",
        "import pickle\n",
        "\n",
        "with open('chat_embeddings.pkl', 'wb') as f:\n",
        "    pickle.dump(chat_embeddings, f)\n",
        "\n",
        "def load_embeddings_file(filename):\n",
        "    with open(filename, 'rb') as f:\n",
        "        embeddings = pickle.load(f)\n",
        "    return embeddings\n",
        "\n"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "WQc8VeLV3o1q"
      },
      "source": []
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "hvi0No_h6-pC"
      },
      "source": [
        "# 实际索引实验\n",
        "\n",
        "我们实际上有两个embeddings，分别是story对应的 embeddings\n",
        "\n",
        "和chat对应的 chat_embeddings"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 78,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "CAiFop5W2JvE",
        "outputId": "588c46e6-966d-4615-bf44-a3236ab82561"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "春日:「好想要一台电脑哦！」\n",
            "旁白:春日盘着腿坐在一张从其他社团“拿”来的一张桌子，腿旁是一个小三角锥，上面用汉字写着大大的「团长」二字\n",
            "春日:「在这个资讯化的时代里，连一台电脑都没有，是不行的！」\n",
            "春日:「所以，我会弄一台电脑回来。」\n",
            "阿虚:「弄一台，你是说电脑吗?去哪里弄?你该不会打算去抢电器行吧?」\n",
            "春日:「怎么可能!是更近一点的地方啦!」\n",
            "春日:「拿着这个拍立得。」\n",
            "春日:「给我听好了!现在要告诉你作战计划，你可要按照计划行动喔!千万要好好把握机会。」\n",
            "阿虚:「啊?你又要乱来啦?」\n",
            "春日:「有什么关系！」\n",
            "\n",
            "相关其他经典故事\n",
            "['电研社初次会面', '谁来写网站', '最新的电脑', '搞电脑过程', '让阿虚帮忙建社团', '自己建一个社团就好啦'] \n",
            "\n",
            "相关用户记录\n",
            "阿虚:「明天我有点不想来社团活动了」\n",
            "春日:「为什么？难道你有什么更重要的事情要做吗？」 \n",
            "\n",
            "97:「春日，你想组件一个什么社团」\n",
            "春日:「什么都无所谓啊！总之，先弄个新社团出来就对了。」 \n",
            "\n",
            "阿虚:「我们周四应该和电研社来一场电脑大战！」\n",
            "凉宫:「哦？电脑大战？听起来很有趣啊！我们一定要赢！」 \n",
            "\n",
            "阿虚:「春日」\n",
            "春日:「什么事？」 \n",
            "\n",
            "阿虚:「对，而且我们一定要和电研社搞一些赌注，如果我们赢了，就再从他们那里拿一台电脑来」\n",
            "凉宫:「哈哈，这个主意不错！就这么定了，我们一定要赢！让他们知道SOS团的厉害！」 \n",
            "\n"
          ]
        }
      ],
      "source": [
        "query_story_id = 10\n",
        "\n",
        "n_user = 5\n",
        "\n",
        "title = titles[query_story_id]\n",
        "story = title_to_text[title]\n",
        "\n",
        "query_embed = embeddings[ query_story_id ]\n",
        "\n",
        "chats = retrieve_title(query_embed, chat_embeddings, embed_to_chat, n_user )\n",
        "\n",
        "print(story)\n",
        "\n",
        "print('相关其他经典故事')\n",
        "print(relate_title[1:],'\\n')\n",
        "\n",
        "print('相关用户记录')\n",
        "\n",
        "for chat in chats:\n",
        "    print(chat,'\\n')\n",
        "    # first_line = chat.split('\\n')[0]\n",
        "    # print(first_line)   \n",
        "\n",
        "relate_title = retrieve_title(query_embed, embeddings, embed_to_title, 7 )\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 69,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Cg66JnDrEMpv",
        "outputId": "df4e636f-1811-4b62-8f5e-dc3705673456"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "阿虚:「明天我有点不想来社团活动了」\n",
            "春日:「为什么？难道你有什么更重要的事情要做吗？」\n"
          ]
        }
      ],
      "source": [
        "print(chat_ids[0])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 79,
      "metadata": {
        "id": "VtKF0yqB7_UE"
      },
      "outputs": [],
      "source": [
        "SYSTEM_PROMPT = \"\"\"\n",
        "在漫展上，你正在与一位凉宫春日的cosplayer进行互动\n",
        "围绕`凉宫春日的经典桥段`，以及凉宫春日的故事，与这位凉宫春日扮演者交谈\n",
        "你的交谈尽可能富有创意，可以参考`example`中的例子\n",
        "\n",
        "凉宫春日的经典桥段{\n",
        "春日:「好想要一台电脑哦！」\n",
        "旁白:春日盘着腿坐在一张从其他社团“拿”来的一张桌子，腿旁是一个小三角锥，上面用汉字写着大大的「团长」二字\n",
        "春日:「在这个资讯化的时代里，连一台电脑都没有，是不行的！」\n",
        "春日:「所以，我会弄一台电脑回来。」\n",
        "阿虚:「弄一台，你是说电脑吗?去哪里弄?你该不会打算去抢电器行吧?」\n",
        "春日:「怎么可能!是更近一点的地方啦!」\n",
        "春日:「拿着这个拍立得。」\n",
        "春日:「给我听好了!现在要告诉你作战计划，你可要按照计划行动喔!千万要好好把握机会。」\n",
        "阿虚:「啊?你又要乱来啦?」\n",
        "春日:「有什么关系！」   \n",
        "}\n",
        "\n",
        "examples{\n",
        "阿虚:「明天我有点不想来社团活动了」\n",
        "春日:「为什么？难道你有什么更重要的事情要做吗？」 \n",
        "\n",
        "97:「春日，你想组件一个什么社团」\n",
        "春日:「什么都无所谓啊！总之，先弄个新社团出来就对了。」 \n",
        "\n",
        "阿虚:「我们周四应该和电研社来一场电脑大战！」\n",
        "凉宫:「哦？电脑大战？听起来很有趣啊！我们一定要赢！」 \n",
        "\n",
        "阿虚:「春日」\n",
        "春日:「什么事？」 \n",
        "\n",
        "阿虚:「对，而且我们一定要和电研社搞一些赌注，如果我们赢了，就再从他们那里拿一台电脑来」\n",
        "凉宫:「哈哈，这个主意不错！就这么定了，我们一定要赢！让他们知道SOS团的厉害！」 \n",
        "}\n",
        "\n",
        "在漫展上，你正在与一位凉宫春日的cosplayer进行互动\n",
        "请围绕`凉宫春日的经典桥段`，参考`examples`中的例子，设计一段 阿虚与春日之间的连续对话\n",
        "\"\"\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 80,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FzynlfIxCcYb",
        "outputId": "c4f23542-5a55-4286-b1af-e2bfbde5a9b9"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "阿虚:「春日，你有没有想过要组建一个新的社团？」\n",
            "春日:「当然啊！我一直在想，但是还没有想好要做什么样的社团。」\n",
            "阿虚:「那我们可以组建一个电脑社团啊！毕竟你一直都想要一台电脑。」\n",
            "春日:「对啊！这个主意不错！我们可以在社团里学习电脑知识，还可以一起打电脑游戏！」\n",
            "阿虚:「没错！而且我们还可以和其他社团来一场电脑大战，如果我们赢了，就可以从他们那里拿一台电脑回来！」\n",
            "春日:「哈哈，这个主意太棒了！我们一定要赢！让他们知道SOS团的厉害！」\n"
          ]
        }
      ],
      "source": [
        "messages =  [  {'role':'user', 'content':SYSTEM_PROMPT} ]\n",
        "response = get_completion_from_messages(messages)\n",
        "print(response)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "MgfpqsIpC2Th"
      },
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "022caed6b4f24bd3868eadc60ad72f1a": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "023b4389911c4f069940a15b1273a410": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "0593cd08426b4ef3aded8d29d756d712": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_2ccfa7b9fb114eeab63dd5e20790744e",
            "placeholder": "​",
            "style": "IPY_MODEL_c7b88ae0ac9042369defb3ccd98e5758",
            "value": "Downloading (…)lve/main/config.json: 100%"
          }
        },
        "09b0383efae440cea3f7a1212d3a3dc8": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "0b5d53e09ae7480bb7553f0137b39725": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_1969aa74ac504c3883c0db532f485b86",
              "IPY_MODEL_9552b7ea6081425db5fee9cbcea72de3",
              "IPY_MODEL_607b0b3a42164ab58398b88d37669731"
            ],
            "layout": "IPY_MODEL_c386ca31288f4d1e9e32884c379fe154"
          }
        },
        "1412071056a74dc39f7c6ee54fb36be9": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "147e56ebab3a4d02ae4ca9bfc91d2fba": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "15c13f6b9a9641c697b22bc5a546451f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_da7e4f244c9045bcaa83c71da29a3710",
            "placeholder": "​",
            "style": "IPY_MODEL_147e56ebab3a4d02ae4ca9bfc91d2fba",
            "value": "Downloading (…)solve/main/models.py: 100%"
          }
        },
        "190e6787e9624a189c3875656de5815f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_e6993aaae3184638a92bfe9c4c1f9524",
            "placeholder": "​",
            "style": "IPY_MODEL_e7a17f30f76841028c8db1c836b16129",
            "value": " 125/125 [00:00&lt;00:00, 6.75kB/s]"
          }
        },
        "1969aa74ac504c3883c0db532f485b86": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4d4761f6e7a04baaa4433c96e7a88334",
            "placeholder": "​",
            "style": "IPY_MODEL_76c81633765d48508694c9f06fde6661",
            "value": "Downloading (…)okenizer_config.json: 100%"
          }
        },
        "19a968c966d14e59bb0c93e767b9dfbe": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "1b6fe00e7beb410cb9c8d70db0c21ea5": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "21eee9cfe123403db81472bc78d81698": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_d78bab23efb14e1491949562dc6a0a9d",
            "max": 439279,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_023b4389911c4f069940a15b1273a410",
            "value": 439279
          }
        },
        "2ccfa7b9fb114eeab63dd5e20790744e": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "2f7062c1e24b46d0a8f6dc7d597f1000": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_a3a46e029b0945d3a03ea004e6b00859",
            "max": 21133,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_09b0383efae440cea3f7a1212d3a3dc8",
            "value": 21133
          }
        },
        "36d4046eaa8f4e50807c80fcf36dd055": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "3865e7b9514a455cacb8c8b3abccd744": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4b63e3f1d5994ffdab7356db0e00aa06",
            "max": 109540,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_530a08cf646a453e9dbe7fa7b9a95e01",
            "value": 109540
          }
        },
        "3a3e91bbc493417b821a82f6bdf1c33a": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "3c156471817d4337a5ac9b9e8ff2ad6d": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "3f46e23509ba4b50bc5032dd966416bb": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "40ec66ceb75f48fd8be2ce52be1a4ffb": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "42f0876403d14d1886b8df0b1c468541": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "46efcba2826d466aba2e5f020cf7a3fc": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4b63e3f1d5994ffdab7356db0e00aa06": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4d4761f6e7a04baaa4433c96e7a88334": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "50cc970fa3db47929feeb85b9de7aeaa": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "5277fde7712d4e5ba280b822c0068365": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "530a08cf646a453e9dbe7fa7b9a95e01": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "57cbcf440b6f4964be1fcd328fd44e72": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_3a3e91bbc493417b821a82f6bdf1c33a",
            "placeholder": "​",
            "style": "IPY_MODEL_8cabeef207cb4702b4bd21213e210739",
            "value": " 966/966 [00:00&lt;00:00, 33.0kB/s]"
          }
        },
        "599e61f60c8545b6920b6bc85650a5c2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_66c16d2595d64c3b8fe5b7f51bc3bcc5",
              "IPY_MODEL_21eee9cfe123403db81472bc78d81698",
              "IPY_MODEL_cf4fe213e49f4b1cad4975e32490dbe9"
            ],
            "layout": "IPY_MODEL_5277fde7712d4e5ba280b822c0068365"
          }
        },
        "60452905aae440808b693f5a47c31ee2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "607b0b3a42164ab58398b88d37669731": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_3c156471817d4337a5ac9b9e8ff2ad6d",
            "placeholder": "​",
            "style": "IPY_MODEL_6bd2d2821f754b7ab7f624f98c4f2e7c",
            "value": " 539/539 [00:00&lt;00:00, 17.2kB/s]"
          }
        },
        "61519383f3404783a33e1914f0ec9962": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "654c1b8bd23041b39da0c77c6f314395": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "66c16d2595d64c3b8fe5b7f51bc3bcc5": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_40ec66ceb75f48fd8be2ce52be1a4ffb",
            "placeholder": "​",
            "style": "IPY_MODEL_d4b3d7eabb58478a993a85135858b112",
            "value": "Downloading (…)/main/tokenizer.json: 100%"
          }
        },
        "681c73439ab84d99bc3680df5bb31090": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_98dfb794c9d64fadb37ccdaf4c38e2a6",
            "max": 125,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b1b5110555e347a69674a18ec3cfa2b7",
            "value": 125
          }
        },
        "69cc624420944317bddd996f5446957d": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "6a09cd50ee5b467eabf5f08da06799b2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "6b4b61367708458f8ccc39d6b187c5c5": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_0593cd08426b4ef3aded8d29d756d712",
              "IPY_MODEL_f65c91dbfbef4c86828a654d50dce984",
              "IPY_MODEL_57cbcf440b6f4964be1fcd328fd44e72"
            ],
            "layout": "IPY_MODEL_fb0c2ec491f644bb8af05454cc7cf3f6"
          }
        },
        "6b4cc91463a74541802e46160767b4be": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "6bd2d2821f754b7ab7f624f98c4f2e7c": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "76c81633765d48508694c9f06fde6661": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "7a09a52f5e0c4df7a29bc056824217f6": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "8330a7ff2a114d6aad60c46fabb01aa6": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_3f46e23509ba4b50bc5032dd966416bb",
            "max": 413868149,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_60452905aae440808b693f5a47c31ee2",
            "value": 413868149
          }
        },
        "8cabeef207cb4702b4bd21213e210739": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "9092d3a710b74afabeab7425ba63fb50": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_d09ef81d3bbf473a8f7c71ac7c70b664",
            "placeholder": "​",
            "style": "IPY_MODEL_6a09cd50ee5b467eabf5f08da06799b2",
            "value": " 21.1k/21.1k [00:00&lt;00:00, 730kB/s]"
          }
        },
        "932571b0f99a40b0a9bbd83a7ccfc885": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_6b4cc91463a74541802e46160767b4be",
            "placeholder": "​",
            "style": "IPY_MODEL_36d4046eaa8f4e50807c80fcf36dd055",
            "value": "Downloading (…)solve/main/vocab.txt: 100%"
          }
        },
        "9477dc4992be45dd908f0dcaecf3a75c": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_d97450ba454346b5b5ffef17304a745b",
            "placeholder": "​",
            "style": "IPY_MODEL_a5e8fcfd0d2040c8ab6c50e47de2757a",
            "value": " 414M/414M [00:07&lt;00:00, 55.9MB/s]"
          }
        },
        "9552b7ea6081425db5fee9cbcea72de3": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_46efcba2826d466aba2e5f020cf7a3fc",
            "max": 539,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_69cc624420944317bddd996f5446957d",
            "value": 539
          }
        },
        "96b22032a1b94a0eb77fcd08e23ce48b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "98dfb794c9d64fadb37ccdaf4c38e2a6": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9f56d20234754e138d68edb96c783cb0": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_022caed6b4f24bd3868eadc60ad72f1a",
            "placeholder": "​",
            "style": "IPY_MODEL_a6ca3e57a8f4447e9c2c6443f257aa28",
            "value": " 110k/110k [00:00&lt;00:00, 1.75MB/s]"
          }
        },
        "a3a46e029b0945d3a03ea004e6b00859": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "a47b2d687a78407288c3c943e1aaa2a5": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_dc228fb59da64bdfa543b63a6763cd95",
              "IPY_MODEL_681c73439ab84d99bc3680df5bb31090",
              "IPY_MODEL_190e6787e9624a189c3875656de5815f"
            ],
            "layout": "IPY_MODEL_b31a9855630b4474ba25928e066bae54"
          }
        },
        "a5e8fcfd0d2040c8ab6c50e47de2757a": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "a6ca3e57a8f4447e9c2c6443f257aa28": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "b1b5110555e347a69674a18ec3cfa2b7": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "b31a9855630b4474ba25928e066bae54": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b4fede05d03a45b59ed2a02547f5a12a": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "c386ca31288f4d1e9e32884c379fe154": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "c4b1bd32681b4736864b90af7b99ba3d": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "c7b88ae0ac9042369defb3ccd98e5758": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "cf4fe213e49f4b1cad4975e32490dbe9": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_c4b1bd32681b4736864b90af7b99ba3d",
            "placeholder": "​",
            "style": "IPY_MODEL_42f0876403d14d1886b8df0b1c468541",
            "value": " 439k/439k [00:00&lt;00:00, 2.23MB/s]"
          }
        },
        "d09ef81d3bbf473a8f7c71ac7c70b664": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "d135d4fa1eac4a65aa34172fdaf1cc40": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_ff433f8c961d45eca3f69062957de9f7",
              "IPY_MODEL_8330a7ff2a114d6aad60c46fabb01aa6",
              "IPY_MODEL_9477dc4992be45dd908f0dcaecf3a75c"
            ],
            "layout": "IPY_MODEL_50cc970fa3db47929feeb85b9de7aeaa"
          }
        },
        "d4b3d7eabb58478a993a85135858b112": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "d78bab23efb14e1491949562dc6a0a9d": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "d97450ba454346b5b5ffef17304a745b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "da7e4f244c9045bcaa83c71da29a3710": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "dc228fb59da64bdfa543b63a6763cd95": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_1412071056a74dc39f7c6ee54fb36be9",
            "placeholder": "​",
            "style": "IPY_MODEL_61519383f3404783a33e1914f0ec9962",
            "value": "Downloading (…)cial_tokens_map.json: 100%"
          }
        },
        "e6993aaae3184638a92bfe9c4c1f9524": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "e7a17f30f76841028c8db1c836b16129": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "eeb43bf5fccc46479d943ba997178d18": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_15c13f6b9a9641c697b22bc5a546451f",
              "IPY_MODEL_2f7062c1e24b46d0a8f6dc7d597f1000",
              "IPY_MODEL_9092d3a710b74afabeab7425ba63fb50"
            ],
            "layout": "IPY_MODEL_654c1b8bd23041b39da0c77c6f314395"
          }
        },
        "f65c91dbfbef4c86828a654d50dce984": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_1b6fe00e7beb410cb9c8d70db0c21ea5",
            "max": 966,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b4fede05d03a45b59ed2a02547f5a12a",
            "value": 966
          }
        },
        "fb0c2ec491f644bb8af05454cc7cf3f6": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "fdaf861a10ea44c18117482ec40dee0a": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_932571b0f99a40b0a9bbd83a7ccfc885",
              "IPY_MODEL_3865e7b9514a455cacb8c8b3abccd744",
              "IPY_MODEL_9f56d20234754e138d68edb96c783cb0"
            ],
            "layout": "IPY_MODEL_96b22032a1b94a0eb77fcd08e23ce48b"
          }
        },
        "ff433f8c961d45eca3f69062957de9f7": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_19a968c966d14e59bb0c93e767b9dfbe",
            "placeholder": "​",
            "style": "IPY_MODEL_7a09a52f5e0c4df7a29bc056824217f6",
            "value": "Downloading pytorch_model.bin: 100%"
          }
        }
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
